/**
 * @function getNowTime
 * @description 传入时间戳，获取指定格式的时间，如果不传，则返回当前时间
 * @param {String | undefined} format 指定时间格式,可以为空，默认为 yyyy-mm-dd:hh-MM-ss
 * @return {String}
 */
export function getFormatTime({time,format}={}) {
	const thisFormat = format || "yyyy-mm-dd:hh-MM-ss"
	const date = new Date(time || new Date())
	const year = date.getFullYear()
	const month = date.getMonth() + 1
	const day = date.getDate()
	const hours = date.getHours()
	const minutes = date.getMinutes()
	const seconds = date.getSeconds()
	return thisFormat.replaceAll("yyyy", year)
		.replaceAll("mm", month)
		.replaceAll("dd", day)
		.replaceAll("hh", hours)
		.replaceAll("MM", minutes)
		.replaceAll("ss", seconds)
}

/**
 * @function getTimeByDay
 * @description 返回当前日期前/后n天日期
 * @param {Number} day 指定返回几天后或几天前
 * @param {String | undefined} format 指定时间格式,可以为空，默认为 yyyy-mm-dd:hh-MM-ss
 * @return {String}
 */
export function getTimeByDay(day = 0,format = "yyyy-mm-dd:hh-MM-ss") {
	const oneDay = 86400000 // 前后一天的时间戳之差
	const nowDate = Date.parse(new Date())
	const time = oneDay * day + nowDate
	return getFormatTime({time,format})
}
/**
 * @function getDaysBetween
 * @description 计算两个时间相差的天数,开始日期大于等于结束日期，返回0
 * @param {Date} startDate 开始日期 yyyy-MM-dd
 * @param {Date} endDate 结束日期 yyyy-MM-dd
 * @return {Number}
 */
export function getDaysBetween(startDate, endDate) {
	const date1 = Date.parse(startDate);
	const date2 = Date.parse(endDate);
	if (date1 >= date2) return 0;
	return (date2 - date1) / (1 * 24 * 60 * 60 * 1000)
}

/**
 * @function getNowDaysBetween
 * @description 计算今天与以后某个时间相差的天数,输入日期小于等于今天的日期，返回0
 * @param {Date} date 日期 yyyy-MM-dd
 * @return {Number}
 */
export function getNowDaysBetween(date) {
	const nowDate = Date.parse(new Date())
	const endDate = Date.parse(date);
	if (nowDate >= endDate) return 0;
	return Math.floor((endDate - nowDate) / (1 * 24 * 60 * 60 * 1000))
}
